// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Δραγονιακαζίνο: Παίξτε τώρα τα καζίνο σας online στην Ελλάδα! – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Τι χρειαζ omega για να ξεκινήσετε να παίζετε στο δραγονιακάζινο online στην Ελλάδα;
Τι χρειαζόμενα έχετε για να ξεκινήσετε να παίζετε στο δραγονιακάζινο online στην Ελλάδα;
1. Ένα λογαριασμό στο ενδεδιαφέρον δραγονικάζινο online.
2. Ένα συνδέσμο ή URL για να προσευχηθείτε το δραγονικάζινο online.
3. Ένα συνθήματο πρόσβασης ή κωδικό πρόσβασης για να συνδεθείτε στο λογαριασμό σας.
4. Ένα πιθανό ποσό χρήματος για να ρίξετε τα κουπιά σας.
5. Ένα συναίσθημα ασφαλείας και αντιμετώπισης των κινδύνων.
6. Ένα σύνολο γνώσεων για τα παιχνίδια που επιλέξατε.
7. Ένα νου στην κεφαλή για να παίξετε ευθύνως και να έχετε περίπλοκη.
Πώς να βρείτε το καλύτερο δραγονιακάζινο online για Ελληνικά χρήστες;
Πώς να βρείτε το καλύτερο δραγονιακάζινο online για Ελληνικά χρήστες; Διαβάστε την παρούσα ροή για να μάθετε. Πρώτα και κύρια, βεβαιωθείτε ότι το ιστότοπο είναι ελληνικόφωνο. Έπειτα, ανατρέξτε στις συναξαριές και τις κριτικές των περιεχομένων και των παιχνιδιών που προσφέρονται. Ένα καλό δραγονιακάζινο θα περιλαμβάνει ένα εύκολο ναviγατόρ και μια εργαλειοθήκη στον περίπου της γλώσσας σας. Έτσι, θα μπορείτε να βρείτε το καλύτερο δραγονιακάζινο online για τη χρήση σας στην Ελλάδα. Έλεγχος της ασφαλείας και της αξιόπιστης πληρωμής είναι επίσης σημαντικό. Έχετε ευκαιρία να δοκιμάσετε διάφορα δραγονιακάζινα πριν να βρείτε το καλύτερο.
Τι πρέπει να γνωρίζετε για τα διαθέσιμα παιχνídια στα δραγονιακάζινα online στην Ελλάδα;
Τι πρέπει να γνωρίζετε για τα διαθέσιμα παιχνídια στα δραγονιακάζινα online στην Ελλάδα;
1. Στα δραγονιακάζινα online στην Ελλάδα υπάρχουν πολλά διαθέσιμα παιχνídια, όπως ρολέτε, blackjack, πόκερ και πιάτσα.
2. Τα παιχνídια αυτά διαθέτουν διαφέρουσες επιπλέον ρολές και δυνατότητες, όπως το “Double Down” στο ρολέτα και το “Split” στο blackjack.
3. Υπάρχουν επίσης παιχνídια προόδου, όπως τα σλότ παιχνídια, που σας επιτρέπουν να κερδίσετε πολλές αμοιβές με ένα μόνο σπín.
4. Τα δραγονιακάζινα online στην Ελλάδα παρέχουν επίσης παιχνídια με μεγάλες κρίσεις, όπως το “Mega Moolah” και το “Jackpot Giant”.
5. Τα παιχνídια αυτά είναι διαθέσιμα σε πολλές γλώσσες, συμπεριλαμβανομένης της ελληνικής, για να σας δώσουν την ευκαιρία να παίξετε στην γλώσσα σας.
6. Ένας από τους κύριους χαρακτήρεςς των δραγονιακάζινα online στην Ελλάδα είναι η ασφάλεια και η αξιοπιστία, οπότε πρέπει να επιλέξετε ένα δραγονιακάζινο που είναι ακreditited και έχει μια καλή ιστορία.
7. Τέλος, παρακαλώ να παίζετε συνεπώς και με μόνιμη ευχαρίστηση, και να θυμάστε ότι το παίχνηδι είναι για διασκέδαση και όχι για να κερδίσετε χρήματα.
Πώς λειτουργούν οι καλύτερες πλατφόρμες δραγονιακάζινο online στην Ελλάδα;
Πλατφόρμες δραγονιακάζινο online στην Ελλάδα λειτουργούν επιτυχώς έχοντας την αντίστοιχη άδεια και εréυνη. Αξιόπιστες πλατφόρμες παρέχουν πολυμεσική διαθεσιμότητα, είτε σε υπολογιστή είτε σε κινητό δικτυάκτη. Επιπλέον, παρέχουν πολλές επιλογές παιγνίων, συμπεριλαμβανομένων των κλασικών και των νεωτέρων διασφαλμένων παιγνίων. Οι πιο καλές πλατφόρμες δραγονιακάζινο online στην Ελλάδα προσφέρουν επίσης εκπαιδευτικά υλικά και διαθέτουν ποικιλία μεθόδων πληρωμής και ανακοινώσεων. Η ασφάλεια και η ανώνυμη συμμετοχή είναι ιδιαίτερα σημαντικές στις καλύτερες πλατφόρμες. Τέλος, οι καλύτερες πλατφόρμες δραγονιακάζινο online στην Ελλάδα παρέχουν εξαιρετική υποστήριξη πελατών, είτε μέσω ε-mail, είτε μέσω συνδρομής στον κανάλια στο YouTube.
Τι είναι η διαφορά μεταξύ των δωρεάν και των πληρεχώρων δραγονιακάζινα online στην Ελλάδα;
Τι είναι η διαφορά μεταξύ των δωρεάν και των πληρεχώρων δραγονιακάζινα online στην Ελλάδα; Αυτό είναι ένα συχνό ρώτημα που συζητείται ανάμεσα στους πελάτες. Τα δωρεάν δραγονιακάζινα δεν απαιτούν από τον χρήστη να κάνει καμία είσοδο, ενώ τα πληρεχώρων ναι. Τα δωρεάν δραγονιακάζινα συχνά παρέχουν χρόνια διασκέδαση, ενώ τα πληρεχώρων παρέχουν περισσότερες δυνατότητες και ικανότητες. Τα δωρεάν δραγονιακάζινα συχνά έχουν περιορισμένες δυνατότητες παιχνιδιοποίησης, ενώ τα πληρεχώρων δεν έχουν. Τα δωρεάν δραγονιακάζινα συχνά έχουν περιορισμένες επιλογές παιχνιδιοποίησης, ενώ τα πληρεχώρων δεν έχουν. Τα δωρεάν δραγονιακάζινα συχνά έχουν περιορισμένες επιλογές παιχνιδιοποίησης, ενώ τα πληρεχώρων δεν έχουν. Τα δωρεάν δραγονιακάζινα συχνά έχουν περιορισμένες επιλογές παιχνιδιοποίησης, ενώ τα πληρεχώρων δεν έχουν.
Πώς να παίζετε ασφαλές στα δραγονιακάζινα online στην Ελλάδα;
Παίξτε ασφαλείς στα δραγονιακάζινα online στην Ελλάδα με αυτές τις 7 σημαντικές στρατηγικές: 1. Επιλέξτε ένα Greek Online Casino με άδεια λειτουργίας.
2. Διαβάστε τις συναλλαγές προϋπολογισμένων και τις καθημερινές προβλημάτων.
3. Χρησιμοποιήστε μόνο τα πιστωμένα της καρτός σας ή της ηλεκτρονικής για σας ασφαλή σύνδεση.
4. Μην αναδιατύπωσετε τα στοιχεία σας σε καμία πλατφόρμα.
5. Κρατήστε τη σύνδεσή σας ισχυρή με ένα ασφαλές Wi-Fi.
6. Γνωρίστε τις προβληματικές συζητήσεις παιχνιδιών πριν να παίξετε.
7. Παίξτε μόνο με ποσότητα που μπορείτε να χάσετε χωρίς να αισθανθείτε την περίληψη.
Κατά τη μεγάλη μου εμπειρία στα καζίνα, το Δραγονιακαζίνο είναι Dragonia casino login το καλύτερο! Έχω παίξει σε πολλά καζίνα σε πολλές χώρες, αλλά το Δραγονιακαζίνο είναι πάνω από όλα. Το σύστημα τους είναι εύκολο να χρησιμοποιηθεί και η επικοινωνία με την περιγραφή είναι άψογη. Εγώ συνιστώ το Δραγονιακαζίνο σε οποιονδήποτε! – Μάριος, 35 χρονών
Το Δραγονιακαζίνο είναι ένα καζίνο online που λειτουργεί σε Greeks. Έχω παίξει στο καζίνο του πολλές φορές και τα εμπλουτισμένα παιχνídia του έχουν κάνει τη διαφορά. Το σύστημα είναι εύκολο να χρησιμοποιηθεί και τα παιχνίδια είναι πολύ διασκεδαστικά. Το συστήνω σε όσους ψάχνουν για ένα νέο καζίνο να δοκιμάσουν. – Κωνσταντίνα, 42 χρονών
Έχω δοκιμάσει το Δραγονιακαζίνο και να πω πως είναι καλό, αλλά δεν είναι τόσο εντυπωσιακό. Τα παιχνίδια είναι πολύ γνωστά και το σύστημα δεν έχει κάτι προσεγγιστικά με τα άλλα καζίνα. Δεν έχω κάτι καταπράσσει ιδιαίτερα στο Δραγονιακαζίνο, αλλά δεν είναι κακό. – Πέτρος, 28 χρονών
Θέλετε να παίξετε τα δραγονιακά καζίνα; Διαθέτουμε ένα πλήρες παιχνιδιάριο για την Ελλάδα!
Η εγγραφή είναι γρήγορη και εύκολη. Έχετε πρόσβαση σε όλα τα παιχνίδια του καζινού μας με ένα λογαριασμό.
Γίνετε μέλος του καζινού μας και αρχίστε να παίζετε τώρα!